/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package server;
import java.net.*;
import java.io.*;
import java.util.*;

/**
 *
 * @author Michael
 */
public class Server {

// Kennungen für An- und Abmeldung
static final String ANMELDUNG ="ANMELDUNG";
static final String ENDE ="ENDE";
static int port = 1337;
static int length = 256; // Länge eines Pakets
static byte[] ba;

public static void main( String args[]) {

    DatagramPacket packet = new DatagramPacket( new byte[length], length);
    Vector clients = new Vector(); // Liste der Clients
    int AnzSpieler = 2;
    try {
        DatagramSocket socket = new DatagramSocket(port);
        //Warten auf Spieler und füllen der Clientliste
        while(clients.size()<AnzSpieler){
            socket.receive(packet);
            InetSocketAddress add = (InetSocketAddress)packet.getSocketAddress();
            // Text aus Paket extrahieren
            String text = new String(packet.getData(), 0, packet.getLength());
            System.out.println( add +">" + text);
            if( text.equals( ANMELDUNG ) ) {
                clients.add(add);
                System.out.println( "Anzahl Clients: " + clients.size() );
            }
        }    
        LeseThreat Lesen = new LeseThreat(socket, clients);
        SendeThreat Senden = new SendeThreat(socket, clients);
        for( ;; ) {
        //Aus dem LeseThreat Array mit Positionsdaten holen und in den zu sendenden String schreiben
          String paketInhalt = new String();
          paketInhalt=""+Lesen.getPos()[0];
             for(int i=1;i<Lesen.getPos().length;i++){
                 paketInhalt=paketInhalt+";"+Lesen.getPos()[i];
            }
          //Bytes aus dem String paketInhalt holen
          ba=paketInhalt.getBytes();        
        }
    }
    catch( IOException e ) {
        System.err.println( "Ausnahmefehler: " + e );
    }
}
public static byte[] getPaket(){
    //Funktion zum Abruf der aktuellen 
    return ba;
}
}
